c语言编译dll给易语言调用 您所在的位置:网站首页 xcode 编译c c语言编译dll给易语言调用

c语言编译dll给易语言调用

2023-06-30 07:28| 来源: 网络整理| 查看: 265

查阅资料发现易语言调用dll是通过stdcall的方式,所以代码如下:在这里插入代码片 __declspec(dllexport) int __stdcall MyFunction(int a, int b) { return a + b; } 把上面代码保存,例如保存为MyDll.c,再在保存的文件夹内打开cmd,输入 gcc -shared -o MyDll.dll MyDll.c 就可以在目录下找到MyDll.dll 然后就是易语言的调用了,易语言调用代码如下:在这里插入图片描述 函数后面加了@8,是因为函数有两个参数,两个参数分别占用了4个字节(int)

剩下的就是在易语言中正常用就可以了

说明: 其中,__declspec(dllexport) 是一个用于在 Windows 平台上声明函数、变量或对象在动态链接库(DLL)中可被导出的扩展关键字 具体含义如下:

__declspec(dllexport) 告诉编译器将修饰的函数、变量或对象导出为 DLL 的公共符号,使其可供其他程序或模块使用。

导出的函数、变量或对象可以被其他程序或模块引用和调用,而不仅限于定义它们的 DLL 内部使用。

这个关键字通常用于在 DLL 中定义公共接口,以便外部程序可以通过导入该 DLL 并使用其中的函数、变量或对象。

在使用 __declspec(dllexport) 修饰函数时,需要在编译该函数所在的源文件时指定编译器选项,以确保函数正确地被导出到生成的 DLL 文件中。

在调用 DLL 中导出的函数时,需要在使用该函数的源文件中包含函数的声明,并链接到相应的 DLL。

总结而言,__declspec(dllexport) 是用于在 Windows 平台上将函数、变量或对象导出为 DLL 的关键字,使其能够在其他程序或模块中被使用和调用

__stdcall 是一种调用约定(calling convention),用于指定函数在调用时如何在堆栈上传递参数和返回值。 __stdcall 是一种标准的调用约定,通常用于 Win32 API 函数和许多 Windows 系统函数。

在使用 __stdcall 调用约定的函数中,参数按照从右到左的顺序依次压入堆栈,由调用方清理堆栈。

返回值通过 EAX 寄存器返回,而不是通过堆栈传递。

__stdcall 调用约定在函数调用时提供了一致性,确保调用方和被调用方在参数传递和堆栈清理方面的一致性。

如果您在函数声明或定义中使用 __stdcall,则需要在调用该函数的地方也使用相同的调用约定。

在使用 Visual Studio 编译器时,__stdcall 通常可以简写为 stdcall,例如 int stdcall myFunction(int a, int b)。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有